package day_7_14;

import java.util.Arrays;

public class Main1 {
    /**
     * 135. 分发糖果
     * https://leetcode.cn/problems/candy/description/?envType=study-plan-v2&envId=top-interview-150
     */
    public int candy(int[] ratings) {
        // 先将所有的默认值设置为1
        // 从左往右进行遍历，当 ratings[i] >  ratings[i - 1] 的话，那么就是说 ratings[i] 比 ratings[i - 1] 大一个
        // 从右往左进行遍历，当 ratings[i] >  ratings[i + 1] 的话，那么就是说 ratings[i] 比 ratings[i + 1] 大一个
        // 之后，进行获取 左到右 和 右到左 每一个位置的最大值
        int n = ratings.length;

        int[] left = new int[n];
        Arrays.fill(left,1);
        // 从左到右
        for(int i = 1;i < n;i++) {
            if(ratings[i] > ratings[i - 1]) {
                left[i] = left[i - 1] + 1;
            }
        }
        // 因为rigth 从 n - 2 开始，那么n-1的位置对于right来说就是1，但是left可能是大于1的，所以直接赋值为最后一个位置的值left位置
        int ret = left[n - 1];
        int[] right = new int[n];
        Arrays.fill(right,1);
        for(int i = n - 2;i >= 0;i--) {
            if(ratings[i] > ratings[i + 1]) {
                right[i] = right[i + 1] + 1;
            }
            ret += Math.max(left[i],right[i]);
        }
        return ret;
    }
}
